#include <iostream>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <cstdlib>
#include <cassert>
#include <cstring>

using namespace std;


// //可以给多个信号设置同一个处理函数
// void handler(int signo){
//     cout << "get a signal: " << signo << endl;
//     exit(2);
// }

// int main(){

//     //改变收到2号信号时执行handler方法
//     //调用signal(2, handler)的时候，hanlder方法没有被调用，只是更改了2号信号的处理动作
//     //只有收到了2号信号的时候才调用handler
//     signal(2, handler);
//     signal(3, handler);

//     while(1){
//         cout << "process pid:" << getpid() << endl;
//         sleep(1);
//     }

//     return 0;
// }



// void Usage(string proc){
//     cout << "Usage: \n\t" << proc << "信号编号  目标进程pid" << endl;
// }

// int main(int argc, char *argv[]){

//     if(argc != 3){
//         Usage(argv[0]);
//         exit(-1);
//     }
//     //信号编号
//     int signo = atoi(argv[1]);
//     //目标进程pid
//     int target_id = atoi(argv[2]);
//     int n = kill(target_id, signo);
//     if(n != 0){
//         cerr << errno << " : " << strerror(errno) << endl;
//         exit(-2);
//     }
//     return 0;
// }



// void handler(int signo){
//     cout << "get a signal: " << signo << endl;
//     exit(2);
// }

// int main(){
//     signal(SIGINT, handler);

//     while(1){
//         cout << "begin" << endl;
//         sleep(1);
//         //C语言终止进程的函数
//         abort();
//         cout << "end" << endl;
//     }

//     // sleep(1);
//     // // 谁调用raise就给谁sig信号
//     // raise(2);
//     return 0;
// }

int count = 0;
void handler(int signo){
    cout << "get a signal: " << signo << endl;
    cout << "count : " << count << endl;
    exit(2);
}

int main(){
    signal(SIGALRM, handler);
    alarm(1);

    

    while(1){
        ++count;
    }
    return 0;
}